package 集合框架;

import java.util.Stack;

// Collection--->List---->Vector---->Stack
// 数据结构：堆栈结构（数组） 先进后出
public class Demo2 {
    // 1. 如何产生对象
    public static void a(){
        //产生一个空集合
        /*<Object> 表示这个栈的泛型类型被指定为 Object。这意味着：可以存放 任何 Java 对象（因为所有类都继承自 Object）。
        但无法存储基本类型（如 int、double，需要先装箱成 Integer、Double 等）。
        虽然可以存入任何对象，但取出时可能需要 强制类型转换（例如：从栈中取出一个 String 需要 (String) objects.pop()）。
        如果栈中元素类型固定，建议明确指定泛型类型（如 Stack<String>），而非使用 Object。
        */
        Stack<Object> objects = new Stack<>();
        //产生一个String类型的空集合
        Stack<String> stack = new Stack<>();
    }
    // 2. 如何对集合进行CRUD(存放、获取、修改、删除)
    // 3. 其他方法
    // 4. 循环集合
    // 5. 如何排序、如何查找
    // 6. 特有方法
    public static void f(){
        Stack<String> stack = new Stack<>();
        //入栈
        stack.push("西安");
        stack.push("延安");
        stack.push("汉中");
        stack.push("安康");
        stack.push("宝鸡");
        stack.push("咸阳");
        stack.push("榆林");
        System.out.println(stack);
        //出栈
        String pop = stack.pop();
        System.out.println(pop);
        System.out.println(stack);
        //读取栈顶元素
        String peek = stack.peek();
        System.out.println(peek);
        System.out.println(stack);
        //判断栈是否为空，为空则为true，非空则为false
        boolean isEmpty = stack.isEmpty();
        System.out.println(isEmpty);
        //从栈顶开始向栈底进行搜索，栈顶为1。
        int search = stack.search("宝鸡");
        System.out.println(search);
    }


    public static void main(String[] args) {
        f();
    }
}
